package com.one.common.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by jiejing on 2017/10/29.
 * <p>
 * 字段校验
 * 长度是否符合规范、图片数量
 */

public class FieldCheckUtil {

    /**
     * 昵称是否符合规范
     *
     * @param nickName 昵称
     * @return true 符合 false 不符合
     */
    public static boolean checkNickName(String nickName) {
        boolean isSuccess = false;
        if (!StringUtils.isNullOrEmpty(nickName)) {
            if (nickName.length() >= 4 && nickName.length() <= 20) {
                isSuccess = true;
            }
        }
        return isSuccess;
    }

    /**
     * 身份证号是否符合规范
     *
     * @param idCard 身份证号
     * @return true 符合 false 不符合
     */
    public static boolean checkIdCard(String idCard) {
        boolean isSuccess = false;
        if (!StringUtils.isNullOrEmpty(idCard)) {
            isSuccess = IdCardCheckUtil.IDCardValidate(idCard);
        }
        return isSuccess;
    }

    /**
     * 手机号是否符合规范
     *
     * @param phone 手机号
     * @return true 符合 false 不符合
     */
    public static boolean checkPhoneNumber(String phone) {
        Pattern pattern = Pattern.compile("^1\\d{10}$");
        Matcher matcher = pattern.matcher(phone);
        return matcher.matches();
    }

    /**
     * 密码是否符合规范
     *
     * @param password 密码
     * 正确返回""
     *                 错误返回msg
     */
    public static boolean checkPassword(String password) {
        Pattern pattern = Pattern.compile("^[a-zA-Z0-9_-]{8,16}$");
        Matcher matcher = pattern.matcher(password);
        return matcher.matches();
    }

    /**
     * 验证中文
     */
    public static boolean checkZH(String zh){
        Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]{2,10}");
        Matcher matcher = pattern.matcher(zh);
        return matcher.matches();
    }

    /**
     * 验证码是否符合规范
     *
     * @param code 验证码
     * @return true 符合 false 不符合
     */
    public static boolean checkVerificationCode(String code) {
        boolean isSuccess = false;
        if (!StringUtils.isNullOrEmpty(code)) {
            if (code.length() == 6) {
                isSuccess = true;
            }
        }
        return isSuccess;
    }

    /**
     * str长度是否符合规范
     *
     * @param str 字符串
     * @return true 符合 false 不符合
     */
    public static boolean checkStrLength(String str, int min, int max) {
        boolean isSuccess = false;
        if (!StringUtils.isNullOrEmpty(str)) {
            if (str.length() >= min && str.length() <= max) {
                isSuccess = true;
            }
        }
        return isSuccess;
    }

    /**
     * str长度8-20   是否符合规范
     *
     * @param str 字符串
     * @return true 符合 false 不符合
     */
    public static boolean checkStrMin8Max20(String str) {
        return checkStrLength(str, 8, 20);
    }

    /**
     * str长度8-30   是否符合规范
     *
     * @param str 字符串
     * @return true 符合 false 不符合
     */
    public static boolean checkStrMin8Max30(String str) {
        return checkStrLength(str, 8, 30);
    }

    /**
     * str长度8-200   是否符合规范
     *
     * @param str 字符串
     * @return true 符合 false 不符合
     */
    public static boolean checkStrMin8Max200(String str) {
        return checkStrLength(str, 8, 200);
    }
}
